package modelo.estrategias;


import modelo.moviles.*;
public class EstrategiaZigZag extends EstrategiaDeVuelo {

	private int columnaTope, columnaInicial, columnaActual;
	
	public EstrategiaZigZag(){
		this.setCantidadPasos(2);
		this.setPasoActual(1);
		this.setColumnaTope(5);
		this.setColumnaInicial(1);
		this.setColumnaActual(1);
	};

	
	
	/* "Le cambia la posicion al movil" */
	public void adelantarMovil(Movil movil){
		if(movil.getFila() >= movil.getNivel().getCantFilas()){
			movil.estallar();
							
		} else {
			movil.setFila(movil.getFila() +  movil.getFactorMovimiento());
			if (getPasoActual() == 1){
				if (getColumnaActual()  < getColumnaTope()){
					movil.setColumna(movil.getColumna() +  movil.getFactorMovimiento());
					setColumnaActual(getColumnaActual() +  1);
				} else {
					movil.setColumna(movil.getColumna() - movil.getFactorMovimiento());
					setColumnaActual(getColumnaActual() - 1);
					setPasoActual(buscarSiguientePaso(getPasoActual() ));
				}		 
			}else{
				if (getColumnaActual()  > getColumnaInicial() ){
					movil.setColumna(movil.getColumna() -  movil.getFactorMovimiento());
           	        setColumnaActual(getColumnaActual() -  1);
				} else {
					movil.setColumna(movil.getColumna() +  movil.getFactorMovimiento());
					setColumnaActual(getColumnaActual() +  1);
					setPasoActual(buscarSiguientePaso(getPasoActual() ));
				}
			}
		}
	}



	public int getColumnaTope() {
		return columnaTope;
	}



	public void setColumnaTope(int columnaTope) {
		this.columnaTope = columnaTope;
	}



	public int getColumnaInicial() {
		return columnaInicial;
	}



	public void setColumnaInicial(int columnaInicial) {
		this.columnaInicial = columnaInicial;
	}



	public int getColumnaActual() {
		return columnaActual;
	}



	public void setColumnaActual(int columnaActual) {
		this.columnaActual = columnaActual;
	}
}

